﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Aprendete.Models;

namespace Aprendete.Controllers
{
    public class MensajesController : Controller
    {
        //
        // GET: /Mensajes/
        MensajeRepository mrep = new MensajeRepository();
        UsuarioRepository urep = new UsuarioRepository();
        MensajeAdmin madmin = new MensajeAdmin();
        public ActionResult Index()
        {
            string userIdentity = User.Identity.Name;
            Usuario user = urep.GetUsuarioxIdentity(userIdentity);
            List<Mensaje> inbox = mrep.GetTodos(user);
            Dictionary<int, string> remitentes = new Dictionary<int, string>();
            foreach (Mensaje m in inbox)
            {
                remitentes.Add(m.MensajeID, urep.GetUsuarioxid(m.RemitenteID).UserName);
            }

            
            TempData["inbox"] = inbox;
            TempData["remitentes"] = remitentes;
            return View();
        }
        
        public ActionResult Responder() 
        {
            int RemitenteID=(int)TempData["remitenteID"];
            Usuario Remitente = urep.GetUsuarioxid(RemitenteID);
            TempData["destinatario"] = Remitente;
            return View();
        }
      

        public ActionResult Enviar()
        {
            return View();
        }


        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Enviar(string destinatario, string asunto, string contenido) 
        {
            
            string sender = User.Identity.Name;
            Usuario senderUser = urep.GetUsuarioxIdentity(sender);
            if (destinatario != null)
            {
                madmin.EnviarMensaje(senderUser, urep.GetUsuarioxUserName(destinatario), contenido, asunto, System.DateTime.Now);
            }
            else 
            {
                string userRemitente = TempData["userRemitente"] as string;
                madmin.EnviarMensaje(senderUser, urep.GetUsuarioxUserName(userRemitente), contenido, asunto, System.DateTime.Now);
            }
            return RedirectToAction("Index");//Todavía no se notifica que el mensaje ha sido enviado
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Leer(int idmail)
        {
            int idRemitente = mrep.GetMensajexid(idmail).RemitenteID;
           
            string remitente = urep.GetUsuarioxid(idRemitente).Nombre + " " + urep.GetUsuarioxid(idRemitente).Apellido;
            Mensaje mensaje = mrep.GetMensajexid(idmail);
            TempData["nombreRemitente"] = remitente;
            TempData["mensaje"] = mensaje;
            return View();
        }

    }
}
